package com.juyu.miliao.common.util;

import org.apache.commons.codec.digest.DigestUtils;

import java.security.MessageDigest;
import java.util.Base64;

public class Md5Encryption {
    private static final String PREFIX = "Is=iUqeWFSqu=qQWEDjqKMn-S";// 前缀盐
    private static final String SUFFIX = "JyWl=isqAWe"; //后缀盐

    public static String md5Encryption(String str) {
        try {
            str = PREFIX + str;
            MessageDigest md = MessageDigest.getInstance("md5");
            // 通过md5计算摘要,返回一个字节数组
            byte[] bytes = md.digest(str.getBytes("UTF-8"));
            // BASE64编码算法
            return Base64.getEncoder().encodeToString(bytes);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;// 发生异常返回空
    }

    /**
     * 字符串sha1加密
     * @param str 待加密字符串
     * @return 加密后字符串
     */
    public static String getDigestStr(String str){
        str = chatAtStr(str);
        str = PREFIX + str + SUFFIX;
        return DigestUtils.sha1Hex(str.getBytes());
    }

    /**
     * 位移字符串内容方法-将字符串第一位与最后一位字符互换位置
     * @param str 待位移字符串
     * @return 移动后字符串
     */
    private static String chatAtStr(String str){
        StringBuilder sb = new StringBuilder(str);
        char x = sb.charAt(0);
        char y = sb.charAt(sb.length()-1);
        sb.setCharAt(0, y);
        sb.setCharAt(sb.length()-1, x);
        return sb.toString();
    }

}
